home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / text / hyper / ADtoHT2_1.lha / Source.lha / MyLib.lha / include / string.h < prev   
Encoding:
C/C++ Source or Header  |  1995-01-01  |  3.5 KB  |  137 lines

  1. #ifndef _STRING_H_
  2. #define    _STRING_H_
  3.  
  4. #ifndef _STDDEF_H_
  5. #include <stddef.h>
  6. #endif
  7.  
  8. void *memchr (const void *, int, size_t);
  9. int memcmp (const void *, const void *, size_t);
  10. void *memcpy (void *, const void *, size_t);
  11. void *memmove (void *, const void *, size_t);
  12. void *memset (void *, int, size_t);
  13. char *strcat (char *, const char *);
  14. char *strchr (const char *, int);
  15. int strcmp (const char *, const char *);
  16. char *strcpy (char *, const char *);
  17. size_t strcspn (const char *, const char *);
  18. size_t strlen (const char *);
  19. char *strncat (char *, const char *, size_t);
  20. int strncmp (const char *, const char *, size_t);
  21. char *strncpy (char *, const char *, size_t);
  22. char *strpbrk (const char *, const char *);
  23. char *strrchr (const char *, int);
  24. size_t strspn (const char *, const char *);
  25. char *strstr (const char *, const char *);
  26. char *strtok (char *, const char *);
  27. char *strdup (const char *);
  28.  
  29. int strcasecmp (const char *, const char *);        /* BSD */
  30. int strncasecmp (const char *, const char *, size_t);    /* BSD */
  31. char *stpcpy(char *, const char *);            /* Lattice */
  32.  
  33. /************************************************************************/
  34.  
  35. #if defined(__GNUC__) && defined(__OPTIMIZE__)
  36.  
  37. extern inline size_t __inlined_strlen(const char *String)
  38. {
  39.   const char *t;
  40.  
  41.   t=String;
  42.   while(*t++)
  43.     ;
  44.   return ~(String-t);
  45. }
  46.  
  47. extern inline char *__inlined_strcpy(char *Dest, const char *Source)
  48. {
  49.   char *t;
  50.  
  51.   t=Dest;
  52.   do
  53.     {
  54.       *t++=*Source;
  55.     }
  56.   while(*Source++!='\0');
  57.   return Dest;
  58. }
  59.  
  60. extern inline char *__inlined_strcat(char *String1, const char *String2)
  61. {
  62.   char *t;
  63.  
  64.   t=String1;
  65.   while(*t++)
  66.     ;
  67.   --t;
  68.   while((*t++=*String2++))
  69.     ;
  70.   return String1;
  71. }
  72.  
  73. extern inline char *__inlined_stpcpy(char *Dest, const char *Source)
  74. {
  75.   while ((*Dest++=*Source++))
  76.     ;
  77.   return Dest-1;
  78. }
  79.  
  80. extern inline void *__inlined_memset(void *Memory, int Value, size_t Size)
  81. {
  82.   if (Size != 0)
  83.     {
  84.       unsigned char *t=Memory;
  85.  
  86.       do
  87.     {
  88.       *t++=Value;
  89.     }
  90.       while(--Size != 0);
  91.     }
  92.   return Memory;
  93. }
  94.  
  95. extern inline int __inlined_strcmp(const char *String1, const char *String2)
  96.  
  97. {
  98.   int Result;
  99.  
  100.   while (!(Result=*String1++-*String2) && *String2++)
  101.     ;
  102.   return Result;
  103. }
  104.  
  105. #define strlen(String)            __inlined_strlen(String)
  106. #define strcpy(Dest,Source)        __inlined_strcpy(Dest,Source)
  107. #define strcat(String1,String2)        __inlined_strcat(String1,String2)
  108. #define stpcpy(Dest,Source)        __inlined_stpcpy(Dest,Source)
  109. #define memset(Memory,Value,Size)    __inlined_memset(Memory,Value,Size)
  110. #define strcmp(String1,String2)        __inlined_strcmp(String1,String2)
  111.  
  112. #endif  /* defined(__GNUC__) && defined(__OPTIMIZE__) */
  113.  
  114. /************************************************************************/
  115.  
  116. #ifdef __SASC_510
  117.  
  118. int __builtin_memcmp (const void *, const void *, size_t);
  119. void *__builtin_memcpy (void *, const void *, size_t);
  120. void *__builtin_memset (void *, int, size_t);
  121. size_t __builtin_strlen (const char *);
  122. int __builtin_strcmp (const char *, const char *);
  123. char *__builtin_strcpy (char *, const char *);
  124.  
  125. #define memset(Memory,Value,Size)    __builtin_memset(Memory,Value,Size)
  126. #define memcmp(Memory1,Memory2,Size)    __builtin_memcmp(Memory1,Memory2,Size)
  127. #define memcpy(Dest,Source,Size)    __builtin_memcpy(Dest,Source,Size)
  128. #define strlen(String)            __builtin_strlen(String)
  129. #define strcmp(String1,String2)        __builtin_strcmp(String1,String2)
  130. #define strcpy(Dest,Source)        __builtin_strcpy(Dest,Source)
  131.  
  132. #endif  /* __SASC_510 */
  133.  
  134. /************************************************************************/
  135.  
  136. #endif /* _STRING_H_ */
  137.